#include "ClasseTabela.h"

Tabela::Tabela()
{
  int x, y;
  maxx = 0;
  maxy = 0;
  for (x=0; x<50; x++)
   {
     for (y=0; y<50; y++)
     {
       table[x][y]=NULL;
     }
   }
}
//==========================
int Tabela::getMaxX()
{
  return maxx;
}
//==========================
int Tabela::getMaxY()
{
  return maxy;
}
//====================================
bool Tabela::Empty()
{
  if ((maxx == 0) && (maxy == 0) && (table[0][0] == NULL))
  return true;
  else
  return false;
}
//==========================
void Tabela::Insere(String entrada, int x, int y)
{
 if (x<50 && y<50)
  {
   if (table[x][y] == NULL)
    {
     table[x][y] = entrada;
     if (x>maxx)
       {maxx = x;}
     if (y>maxy)
       {maxy = y;}
    }
  }
}
//==========================
void Tabela::Remove(int x, int y)
{
 int picox, picoy, contx, conty;

 table[x][y] = NULL;

 if (x==maxx || y==maxy)
 {
   picox = maxx;
   picoy = maxy;
   maxy = maxx = 0;
   for (contx=0; contx<=picox; contx++)
   {
     for (conty=0; conty<=picoy; conty++)
     {
       if ((table[contx][conty]!=NULL))
       {
         if (maxx<contx)
         {
           maxx=contx;
         }
         if (maxy<conty)
         {
           maxy=conty;
         }
       }
     }
   }
 }
}
//==========================
void Tabela::Altera(String entrada, int x, int y)
{
 if (x<50 && y<50)
  {
   if (table[x][y] != NULL)
    {
     table[x][y] = entrada;
     if (x>maxx)
       {maxx = x;}
     if (y>maxy)
       {maxy = y;}
    }
  }
}
//==========================
String Tabela::Consulta(int x, int y)
{
 if (x<50 && y<50)
  return table[x][y];
 else
  return NULL;
}
//==========================
void Tabela::Limpa()
{
  int x, y;
  for (x=0; x<=maxx; x++)
   {
     for (y=0; y<=maxy; y++)
     {
       table[x][y]=NULL;
     }
   }

  maxx = 0;
  maxy = 0;
}

